/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mindbox.mueblesalpes.negocio.exception;

import com.mindbox.mueblesalpes.negocio.entity.TarjetaCredito;

/**
 * Exception que ocurre al tratar una tarjeta de crédito.
 * @author jsanchez
 */
public abstract class ErrorTarjetaCredito extends Exception {
    private TarjetaCredito tarjetaCredito;
    private Long id;
    private String mensaje;
    /**
     * Creates a new instance of <code>ErrorTarjetaCredito</code> without detail message.
     */
    public ErrorTarjetaCredito(TarjetaCredito tarjetaCredito) {
        super();
        this.tarjetaCredito = tarjetaCredito;
    }

    /**
     * Creates a new instance of <code>ErrorTarjetaCredito</code> without detail message.
     */
    public ErrorTarjetaCredito(Long id) {
        super();
        this.id = id;
    }

    /**
     * @return the tarjetaCredito
     */
    public TarjetaCredito getTarjetaCredito() {
        return tarjetaCredito;
    }

    /**
     * @param tarjetaCredito the tarjetaCredito to set
     */
    public void setTarjetaCredito(TarjetaCredito tarjetaCredito) {
        this.tarjetaCredito = tarjetaCredito;
    }

    /**
     * @return the id
     */
    public Long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return the mensaje
     */
    public String getMensaje() {
        return mensaje;
    }

    /**
     * @param mensaje the mensaje to set
     */
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    @Override
    public String getMessage() {
        return getReturn();
    }

    @Override
    public String toString() {
        return getReturn();
    }

   /**
    * Obtiene el retorno para el message y el toString
    * @return
    */
   private String getReturn(){
        if(getId()!= null)
            return String.format(mensaje, getId().toString());
        else if(getTarjetaCredito()!= null && getTarjetaCredito().getId() != null)
            return String.format(mensaje, getTarjetaCredito().getId().toString());
        return String.format(mensaje, "NULA");
   }
}